//package backup;
//
//import java.nio.ByteBuffer;
//
//import javax.crypto.Cipher;
//import javax.crypto.spec.IvParameterSpec;
//import javax.crypto.spec.SecretKeySpec;
//
//import cs6238.common.Guard;
//
///**
// * Wrapper for some Java AES stuff
// * Do not use in production code!
// * 
// * This works, and it prevents the more obvious encryption attacks,
// * but it would be a mistake to use if for anything besides coursework
// */
//@Deprecated
//public class Encryption {
//	
//	private byte[] _key;
//	
//	public Encryption(byte[] key){
//		Guard.that(key.length == 16, "Invalid key length");
//		_key = key;
//	}
//	
//	/**
//	 * Input is  is 16 byte IV + ciphertext, output is plaintext
//	 * @param plaintext
//	 * @return
//	 */
//	public byte[] decrypt(byte[] message){
//		try{
//			byte[] iv = new byte[16];
//			ByteBuffer bb = ByteBuffer.wrap(message);
//			bb.get(iv);
//			
//			byte[] ciphertext = new byte[message.length - 16];
//			bb.get(ciphertext);
//			
//			Cipher c = Cipher.getInstance("AES/CBC/PKCS5PADDING");
//			SecretKeySpec k = new SecretKeySpec(_key, "AES");
//			c.init(Cipher.DECRYPT_MODE, k, new IvParameterSpec(iv));
//			return c.doFinal(ciphertext);
//		}catch (Exception e) {
//			e.printStackTrace();
//		}
//		
//		return null;
//	}
//	
//	/**
//	 * Input is plaintext, output is 16 byte IV + ciphertext
//	 * @param plaintext
//	 * @return
//	 */
//	public byte[] encrypt(byte[] plaintext){
//		try {
//			Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
//			SecretKeySpec k = new SecretKeySpec(_key, "AES");
//			cipher.init(Cipher.ENCRYPT_MODE, k);
//			byte[] iv = cipher.getIV();
//			byte[] cipherText = cipher.doFinal(plaintext);
//			
//			ByteBuffer bb = ByteBuffer.allocate(16 + cipherText.length);
//			bb.put(iv);
//			bb.put(cipherText);
//			return bb.array();
//		}catch (Exception e) {
//			e.printStackTrace();
//		}
//		
//		return null;
//	}
//}
